<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <p>代码中的继承：B继承了A的属性和方法，A和B都有这些属性和方法，不是转移而是多了一份。</p>
    <script>
        // 原版中car和house放在了GaoBW的构造函数中 现在优化了 放到原型对象上
        function GaoBW() {}
        GaoBW.prototype.car = '兰博基尼';
        GaoBW.prototype.house = '外滩十八号';
        

        function Father(n, a) {
            this.name = n;
            this.age = a;
        }

        // 放在new之前修改Father 实例化之后再修改 就来不及了
        function F() {}
        F.prototype = GaoBW.prototype; // F是中介 通过这个中介的原型对象来接受GaoBW的原型对象（为了车和房子）
        // Father.prototype = new F(); // new F()得到的是F的实例 这个实例有F的原型对象传来的车和房子
        Father.prototype = new GaoBW(); // new F()得到的是F的实例 这个实例有F的原型对象传来的车和房子

        Father.prototype.constructor = Father; // 纠正指向

        // 通过new实例化 得到一个儿子的实例
        var son1 = new Father('沈万三', 28);
        var son2 = new Father('朱陶公', 38);
        console.log(son1, son2);
        
        // Father.prototype.car = 'mini' 修改了Father的原型对象后 发现GaoBW的原型对象也变了 不对！
    </script>
</body>
</html>